import request from '@/utils/request'

const api_name = '/pay'

export interface PaymentDTO {
  orderNo: string
  paymentMethod: number
  couponIds: string[]
  name: string
  address: string
  phone: string
  remark: string
}

export interface PaymentResponse {
  orderNo: string // 订单编号
  name: string // 收货人姓名
  phone: string // 收货人电话
  address: string // 收货人地址
  remark: string // 订单备注
  totalAmount: number // 订单总金额
  discountAmount: number // 折扣金额
  payAmount: number // 支付金额
  paymentMethod: number // 支付方式 1:支付宝 2:微信
  payStatus: number // 支付状态 0：未支付 1：已支付 2：支付失败
  payTime: string // 支付时间
  products: OrderItemDTO[] // 商品列表
}

export interface OrderItemDTO {
  productId: number // 商品ID
  name: string // 商品名称
  imageUrl: string // 商品图片地址
  quantity: number // 商品数量
  price: number // 商品单价
}

export default {
  /**
   * 创建支付快照
   * @param payment 支付订单信息
   * @returns 支付快照
   */
  createPayment(payment: PaymentDTO) {
    return request({
      url: `orders/payment`,
      method: 'post',
      data: payment,
    })
  },

  /**
   * 支付操作，请求返回一个支付宝支付网址跳转链接，需要重定向到该网址
   * @param orderNo 订单编号
   * @returns 支付网址
   */
  pay(orderNo: string) {
    return request({
      url: `${api_name}/ali/${orderNo}`,
      method: 'get',
    })
  },

  /**
   * 查询支付结果
   * @param orderNo 订单编号
   * @returns 支付结果是PaymentResponse类型
   */
  queryPayment(orderNo: string) {
    return request({
      url: `orders/payment/${orderNo}`,
      method: 'get',
    })
  },
}
